package ink.tiptop.learn.mapper.test;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import ink.tiptop.learn.pojo.po.test.TestUserBaseInfoPO;
import org.apache.ibatis.annotations.Mapper;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;

/**
 * @author zjf
 * @date 2020-08-16 09:55
 * 这里有一些常用的crud形式
 */
@Mapper
public interface A_UsualTestMapper extends BaseMapper<TestUserBaseInfoPO> {

    /**
     * 插入就这一个
     * 是否需要忽略null字段在application.yml中配置,
     * 或者在PO类中指定是否忽略策略
     */
    default void add() {
        insert(new TestUserBaseInfoPO().setUName("zjf")
                .setUAge(18).setUWork("java开发")
                .setUHobby("敲代码").setUPhone("12345678912")
                .setCreateTime(new Date()));
    }

    /**
     * 常用删除方式
     */
    default void delete() {
        // 1.删除方式1,根据@TableId删除
        deleteById(1);
        // 2.删除方式2,根据@TableId集合删除
        deleteBatchIds(new ArrayList<>(Arrays.asList(new Integer[]{1, 2, 3})));
        // 3.删除方式3,构造Map条件删除,key为column名称,value为column的值
        HashMap<String, Object> deleteMap = new HashMap<>();
        deleteMap.put("id", "1");
        deleteMap.put("name", "laowang");
        deleteMap.put("age", 18);
        deleteByMap(deleteMap);

        // 4.删除方式4 构建一个PO删除对象
        delete(new QueryWrapper<>(
                new TestUserBaseInfoPO()
                        .setId(1)
                        .setUName("laowang")));
    }

    /**
     * 常用的更新方法
     */
    default void update() {
        // 1.更新方法1,根据id更新
        updateById(new TestUserBaseInfoPO().setId(1));
        // 2.更新方法2,用wrapper构造条件
        update(new TestUserBaseInfoPO().setUAge(29),
                new QueryWrapper<TestUserBaseInfoPO>().eq("u_name", "laowang"));
    }

}







